The term “cloud computing” is used to describe network-based computing (typically over the Internet). According to Wikipedia, “cloud computing provides shared processing resources and data to computers and other devices on demand. Cloud computing is a model for enabling ubiquitous, on-demand access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications and services), which can be rapidly provisioned and released with minimal management effort. Cloud computing and storage solutions provide users and enterprises with various capabilities to store and process their data in third-party data centers. Cloud computing relies on sharing of resources to achieve coherence and economy of scale, similar to a utility (like the electricity grid) over a network.” (Source: Wikipedia, https://en.wikipedia.org/wiki/Cloud_computing, visited Aug. 11, 2016, citations omitted.)
The present availability of high-capacity networks, low-cost computers and storage devices as well as the widespread adoption of hardware virtualization, service-oriented architecture, and autonomic and utility computing have led to a growth in cloud computing. Companies can scale up by requesting additional resources from cloud services provider as computing needs increase and then scale down again as demands decrease.
Cloud computing provides resources as services. “Cloud-computing providers offer their ‘services’ according to different models, of which the three standard models per the National Institute of Standards and Technology (NIST) are Infrastructure as a Service (IaaS), Platform as a Service (PaaS), and Software as a Service (SaaS). These models offer increasing abstraction; they are thus often portrayed as layers in a stack, with infrastructure-as-a-stack serving as the bottom layer; platform-as-a-service serving as the middle layer; and software-as-a-service serving as the top layer. These layers can be implemented independently of one another. For example, one can provide SaaS implemented on physical machines (bare metal), without using underlying PaaS or IaaS layers; and conversely one can run a program on IaaS and access it directly, without wrapping it as SaaS.” (Source: Wikipedia, https://en.wikipedia.org/wiki/Cloud_computing, visited Aug. 11, 2016, citations omitted.)
“The NIST's definition of cloud computing defines the service models as follows:
Software as a Service (SaaS). The capability provided to the consumer is to use the provider's applications running on a cloud infrastructure. The applications are accessible from various client devices through either a thin client interface, such as a web browser (e.g., web-based email), or a program interface. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
Platform as a Service (PaaS). The capability provided to the consumer is to deploy onto the cloud infrastructure consumer-created or acquired applications created using programming languages, libraries, services, and tools supported by the provider. The consumer does not manage or control the underlying cloud infrastructure including network, servers, operating systems, or storage, but has control over the deployed applications and possibly configuration settings for the application-hosting environment.
Infrastructure as a Service (IaaS). The capability provided to the consumer is to provision processing, storage, networks, and other fundamental computing resources where the consumer is able to deploy and run arbitrary software, which can include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure but has control over operating systems, storage, and deployed applications; and possibly limited control of select networking components (e.g., host firewalls).” (Source: Wikipedia, https://en.wikipedia.org/wiki/Cloud_computing, visited Aug. 11, 2016, citations omitted.)
One enabling technology for cloud computing is virtualization. “Virtualization software separates a physical computing device into one or more ‘virtual’ devices, each of which can be easily used and managed to perform computing tasks. Hardware virtualization is the virtualization of computers as complete hardware platforms, certain logical abstractions of their componentry, or only the functionality required to run various operating systems. Virtualization hides the physical characteristics of a computing platform from the users, presenting instead another abstract computing platform,” often referred to as a ‘virtual machine.’ (Source: Wikipedia, https://en.wikipedia.org/wiki/Hardware_virtualization, visited Aug. 11, 2016, citations omitted.) The software that controls virtualization is referred to as a “hypervisor” or “virtual machine monitor.” The provisioning and execution of a hypervisor/virtual machine monitor to create virtual machines on behalf of the consumer is an example of a service provided by a public cloud services provider.